﻿Imports System.Reflection
Imports System.Collections.ObjectModel

''' <summary>
''' コレクションエンティティアーカイブ
''' </summary>
''' <remarks>
''' </remarks>
Public Class CollectionEntityArchive
    Implements IEntityArchive

    ''' <summary>
    ''' アーカイブコンテナ
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks>アーカイブコレクション共通ロジック</remarks>
    Friend Property Container As New ArchiveContainer(AddressOf Me.ToCollection)

    ''' <summary>
    ''' オブジェクトをコレクションに変換します
    ''' </summary>
    ''' <param name="instance"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function ToCollection(instance As Object) As ICollection
        Dim lst = DirectCast(instance, ICollection)
        Return lst
    End Function

    ''' <summary>
    ''' アイテムエンティティアーカイブを取得します
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public ReadOnly Property Archives As System.Collections.Generic.IEnumerable(Of ItemEntityArchive) Implements IEntityArchive.Archives
        Get
            Return (From el In Me.Container.Archives Select el.Value)
        End Get
    End Property
End Class